package com.example.blog.modules.system.service;

import com.example.blog.modules.system.dto.NotificationDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

public interface NotificationService {
    /**
     * 获取用户的通知列表
     */
    Page<NotificationDTO> getUserNotifications(Long userId, Pageable pageable);

    /**
     * 创建新通知
     */
    NotificationDTO createNotification(NotificationDTO notificationDTO);

    /**
     * 标记通知为已读
     */
    void markAsRead(Long notificationId);

    /**
     * 标记所有通知为已读
     */
    void markAllAsRead(Long userId);

    /**
     * 删除通知
     */
    void deleteNotification(Long notificationId);

    /**
     * 获取未读通知数量
     */
    long countUnreadNotifications(Long userId);

    /**
     * 获取系统通知数量
     */
    long countSystemNotifications();
    
    // 发送系统通知
    void sendSystemNotification(String title, String content, String type);
    
    // 发送用户通知
    void sendUserNotification(Long userId, String title, String content, String type);
    
    // 发送评论通知
    void sendCommentNotification(Long userId, Long articleId, Long commentId);
    
    // 发送点赞通知
    void sendLikeNotification(Long userId, String targetType, Long targetId);
    
    // 发送关注通知
    void sendFollowNotification(Long userId, Long followerId);
} 